package com.itheima.edu.info.manager.controller;

import com.itheima.edu.info.manager.domain.Student;
import com.itheima.edu.info.manager.service.StudentService;

import java.util.Scanner;

public abstract class BaseStudentController {

    private StudentService service = new StudentService();
    private Scanner sc = new Scanner(System.in);
    {


    }
    //学生交互类中入口
    public final void start(){
        // 死循环让用户选择
        //Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("--------欢迎来到 <学生> 管理系统--------");
            System.out.println("请输入您的选择: 1.添加学生  2.删除学生  3.修改学生  4.查看学生   5.退出");


            int choice = sc.nextInt();
            switch (choice) {
                case 1:
                    // System.out.println("添加");
                    addStudent();
                    break;
                case 2:
                    //System.out.println("删除");
                    deleteStudent();
                    break;
                case 3:
                    //System.out.println("修改");
                    updateStudent();
                    break;
                case 4:
                    //System.out.println("查询");
                    findAllStudents();
                    break;
                case 5:
                    System.out.println("谢谢使用学生管理系统");
                    return;
                default:
                    System.out.println("输入有误");
                    break;
            }

        }


    }

    //录入学号
    public final String getSid() {
        String sid;
        while (true) {
            System.out.println("请输入学生学号");
            sid = sc.next();

            // 判断学号是否存在
            boolean exists = service.isExists(sid);
            if (!exists) {
                // 不存在重新录
                System.out.println("输入的学号 不存在, 请重新选择或输入exit退出");
            } else {
                // 存在去删除
                break;
            }

        }
        return sid;
    }

    //获取学生信息  ctrl+alt+m  抽取方法
    public  abstract Student getStudent(String sId) ;

    private final void updateStudent() {
        String sid = getSid();
        if ("exit".equals(sid)) {
            return;
        }
       /* System.out.println("请输入姓名");
        String name = sc.next();
        System.out.println("请输入年龄");
        int age = sc.nextInt();
        System.out.println("请输入生日");
        String birthday = sc.next();
        Student student = new Student();
        student.setSid(sid);
        student.setName(name);
        student.setAge(age);
        student.setBirthday(birthday);*/
        Student student = getStudent(sid);
        //创建service 对象

        //修改
        service.updateStudent(sid, student);
        System.out.println("修改成功");
    }

    public final void deleteStudent() {

        /*String deleteId;
        while (true) {
            System.out.println("请输入要删除的学生学号");
            deleteId = sc.next();
            if ("exit".equals(deleteId)) {
                return;
            }
            // 判断学号是否存在
            boolean exists = service.isExists(deleteId);
            if (!exists) {
                // 不存在重新录
                System.out.println("要删除的学号 不存在, 请重新选择或输入exit退出");
            } else {
                // 存在去删除
                break;
            }
        }
*/
        String sid = getSid();
        if ("exit".equals(sid)) {
            return;
        }
        service.deleteStudent(sid);
        System.out.println("删除成功!");


    }

    public final void findAllStudents() {
        Student[] stus = service.findAllStudents();
        if (stus == null) {
            System.out.println("没有学生信息, 请先添加");
            return;
        }
        System.out.println("学号\t姓名\t年龄\t生日");
        for (int i = 0; i < stus.length; i++) {
            //stus.get(i)
            Student student = stus[i];
            if (student != null) {

                System.out.println(student.getSid() + "\t" + student.getName() + "\t" + student.getAge() + "岁\t" + student.getBirthday());
            }
        }


    }

    public final void addStudent() {

        // Scanner sc = new Scanner(System.in);
        String sId;
        while (true) {
            //	① 显示提示信息，提示要输入何种信息
            //     * 		② 键盘录入学生对象所需要的数据
            System.out.println("请输入学号");
            sId = sc.next();

            boolean flag = service.isExists(sId);
            if (flag) {
                System.out.println("输入的学号已存在");
            } else {
                break;
            }

        }

        Student student = getStudent(sId);
        //创建service 对象

        //调用service 方法
        boolean result = service.addStudent(student);
        if (result) {
            System.out.println("添加成功");
        } else {
            System.out.println("添加失败");
        }


    }

    //删除方式2
    public final void deleteStudent2(){
        while(true){
            //用户录入学号
            System.out.println("请输入要删除的学号");

            String sid = sc.next();
            //判断学号所在的索引
            int index=service.getIndex(sid);

            // 如果时-1  没有
            if(index==-1){
                //重新录
                System.out.println("录入的学号不存在 ， 请重新输入");
            }else{
                service.deleteStudentByIndex(index);
                System.out.println("删除成功");
                break;

            }
            //不等于-1 调用service  删除方法

        }




    }

}
